# 设置 CMake 最低版本要求
cmake_minimum_required(VERSION 3.10)

# 设置项目名称/定义工程名称
project(2d_rpg_game)

# 设置 C++ 标准:指定使用 C++11 标准进行编译。
set(CMAKE_CXX_STANDARD 17)

#[[
    MESSAGE：向终端输出用户定义的信息
    MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message")
    SEND_ERROR      #产生错误，生成过程被跳过。
    STATUS          #输出前缀为--d的信息。
    FATAL_ERROR     #立即终止所有的cmake过程。
]]


# 定义外部库的目录路径
set(EXTERNAL_LIB_DIR ${PROJECT_SOURCE_DIR}/external_libs)

# 将外部库的头文件目录添加到包含路径，这样项目中的代码就能找到这些头文件
# spdlog 库
include_directories(${EXTERNAL_LIB_DIR}/spdlog/include)
link_directories(${EXTERNAL_LIB_DIR}/spdlog/libs)
# opencv库
include_directories(${EXTERNAL_LIB_DIR}/opencv/include/opencv4)
link_directories(${EXTERNAL_LIB_DIR}/opencv/lib)
# onnxruntime 库
include_directories(${EXTERNAL_LIB_DIR}/onnxruntime/include)
link_directories(${EXTERNAL_LIB_DIR}/onnxruntime/lib)


# 添加各个模块的子目录，让 CMake 处理这些模块的构建
# 可以理解为向当前工程添加存放源文件的子目录
add_subdirectory(modules/character_module)
add_subdirectory(modules/map_module)

# 添加主程序的子目录
add_subdirectory(app)
# 添加主程序的子目录
add_subdirectory(tests)



#
#
# cmake_minimum_required：指定项目所需的 CMake 最低版本。
# project：设置项目的名称。
# set(CMAKE_CXX_STANDARD 11)：
# add_subdirectory：将指定的子目录加入到项目构建中，让 CMake 去处理这些子目录下的 CMakeLists.txt 文件。
# set、include_directories 和 link_directories：用于处理外部库，分别设置外部库目录、添加头文件包含路径和库文件链接路径。
#
#
